package com.itheima.d1_inner_class1;
/*
    1 内部类
        是类中的五大成分之一（成员变量、方法、构造器、代码块、内部类），如果一个类定义在另一个类的内部，这个类就是内部类。
        场景：当一个类的内部，包含了一个完整的事物，且这个事物没有必要单独设计时，就可以把这个事物设计成内部类。
    2 成员内部类
        就是类中的一个普通成员，类似前面我们学过的普通的成员变量、成员方法。
    3 创建对象的格式：
        外部类名.内部类名 对象名 = new 外部类(...).new 内部类(...);
    4 成员内部类中访问其他成员的特点
        1)、和前面学过的实例方法一样，成员内部类的实例方法中，同样可以直接访问外部类的实例成员、静态成员。
        2)、可以在成员内部类的实例方法中，拿到当前外部类对象，格式是：外部类名.this
 */
public class Test {


    public static void main(String[] args) {
        //String name ="小明";
        All.A a=new All().new A();
     a.method();
      //  System.out.println(name);
        System.out.println();
        System.out.println("------------");
        //创建静态内部类的对象
       All.StaticClass staticClass= new All.StaticClass();
       All.StaticClass.staticMethod();


    }
public static class All{
    //String name ="小明";
   private static String name ="小明";
   int age=18;
    //内部类
    public class A{
      //  private static String name;
       String name ="大名";
        public void method(){
            System.out.println("内部类的方法");
            System.out.println(name);
            //输出外部类属性内容
            System.out.println(All.this.name);
        }
    }

    //静态内部类
    static class StaticClass {
        static int age=22;
        public static void staticMethod(){
            //静态方法只能访问静态变量
            //System.out.println(All.this.age);
            System.out.println(age);
            System.out.println(All.name);
        }

    }
}
}
